const db = require('../db/index')
//定义获取文章的分类的处理函数
exports.getArtCates = (req, res) => {
    // order by id asc 意思是说数据按照id的从大大到小去排列
    const sql = `select * from ev_article_cate where is_delete = 0 order by id asc `
    db.query(sql, (err, results) => {
        if (err) res.cc(err)
        res.send({
            status: 0,
            message: "获取文章列表成功",
            data: results
        })
    })
}
//定义新增文章分类和别名的处理函数
exports.addArticleCates = (req, res) => {
    //我们需要检查表中是否已经存在该别名
    const sql = `select * from ev_article_cate where name = ? or alias = ?`
    //执行sql语句  
    db.query(sql,[req.body.name,req.body.name],(err,results)=>{
        if(err) return res.cc(err);
        //如果说有两行数据 那么results 你打对了就不要往回删我都无语了
        if(results.length === 2) res.cc("分类名称和别名已占用,请更换后重试!")
        if(results.length === 1 && results[0].name === req.body.name && results[0].alias === req.body.alias ){
            res.cc("分类名称和别名已占用,请更换后重试!")
        }
        if(results.length === 1 && results[0].name === req.body.name){
            res.cc("分类名称已占用,请更换后重试")
        }
        if(results.length === 1 && results[0].alias === req.body.name){
            res.cc("分类别称已占用,请更换后重试")
        }
        //执行sql语句进行插入文章类名和别名
        const sql = `insert into ev_article_cate set ?`
        // res.cc('新增文章分类成功！', 0)
        db.query(sql,req.body,(err,results)=>{
            if(err) return res.cc(err)
            if(results.affectedRows !== 1) return res.cc("新增文章分类失败")
            res.cc("新增文章分类成功",0)
        })
    })

}
exports.deleteCateById = (req,res)=>{
    // res.cc('ok')
    //这里我们通过update语句进行一个假的删除 也就是将删除的进行一个标记
    const sql = `update ev_article_cate set is_delete = 1 where id = ?`
    db.query(sql,req.params.id,(err,results)=>{
        if(err) return res.cc(err)
        if(results.affectedRows !== 1) return res.cc("删除文章分类失败")
        res.cc("删除文章分类成功",0)
    })
}
//定义通过id获取文章的处理函数
exports.getArtCateById = (req,res)=>{
    //sql语句
    const sql = `select * from ev_article_cate where id = ?`
    db.query(sql,req.params.id,(err,results)=>{
        if(err) return res.cc(err)
        if(results.length !== 1 ) return res.cc("获取分类列表失败");
        //删除之前仔细想一想 倒地要不要删除
        res.send({
            status:0,
            message:"获取分类列表成功",
            data:results[0]
        })
    })
}
//定义更新文章分类的处理函数 删之前一定要考虑清楚
exports.updateCateById =(req,res) =>{
    //第一步先检查当前id以外是否还有与要更新的数据相同
    const sql = `select * from ev_article_cate where Id<>? and (name = ? or alias = ?)`
    //执行sql语句
    db.query(sql,[req.body.Id,req.body.name,req.body.alias],(err,results)=>{
        //当分类名称和别名同时被占用
        if(results.length === 2) return res.cc("分类名称和别名被占用,请更换后重试!")
        if(results.length === 1 && results[0].name === req.body.name && results[0].alias === req.body.alias) {
            return res.cc("分类名称和别名被占用,请更换后重试!")
        }
        if(results.length === 1 && results[0].name === req.body.name) {
            return res.cc("分类名称被占用,请更换后重试!")
        }
        if(results.length === 1 && results[0].alias === req.body.alias) {
            return res.cc("分类别名被占用,请更换后重试!")
        }
        //执行sql语句进行更新
        const sql = `update ev_article_cate set ? where Id = ?`
        db.query(sql,[req.body,req.body.Id],(err,results)=>{
            if(err) return res.cc(err);
            if(results.affectedRows !== 1) return res.cc("更新文章分类失败")
            res.cc("更新文章分类成功",0)
            //多思考 不要不思考  删除之前要思考 
        })
    })
}
